Soru & Cevap

Back butonu çalışmıyor

23.12.2014 - 11:11

Merhaba arkadaşlar ne yaptıysam yapıyim Webview uygulamamda back butonunu düzeltemedim. Geçmişte url varsa bir önceki sayfaya gitsin yoksada uygulamadan çıksın istiyorum kodlarım doğru gözüküyor ancak uygulama içerisinde geri tuşuna basınca Malesef uygulama durduruldu diyip atıyor uygulamadan hatam nerde yardım ederseniz sevinirim şimdiden sağolun :)

MainActivity.java:

[code]

package com.kefelon.goldplak;

import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;


public class MainActivity extends ActionBarActivity {
 WebView webview;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        WebView webview = (WebView) findViewById(R.id.webview);
        webview.getSettings().setSupportZoom(true);
        webview.getSettings().setJavaScriptEnabled(true);
        webview.loadUrl("http://www.goldplak.com");

        final ProgressDialog progress = ProgressDialog.show(this, "Gold Plak", "Yükleniyor....", true);
        progress.show();
        webview.setWebViewClient(new WebViewClient() {

            @Override
            public void onPageFinished(WebView view, String url) {
                super.onPageFinished(view, url);
                Toast.makeText(getApplicationContext(), "Sayfa yüklendi", Toast.LENGTH_SHORT).show();
                progress.dismiss();
            }

            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                Toast.makeText(getApplicationContext(), "Bir hata oluştu", Toast.LENGTH_SHORT).show();
                progress.dismiss();
            }

        });

    }

    @Override
    public void onBackPressed() {
        if(webview.canGoBack()) {
            webview.goBack();
        } else {
            super.onBackPressed();
        }
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        super.onOptionsItemSelected(item);
        switch(item.getItemId()) {
            case R.id.action_about:
                action_aboutMenuItem();
                break;
            case R.id.action_settings:
                action_settingsMenuItem();
                break;
        }
        return true;
    }
private void action_aboutMenuItem(){
    new AlertDialog.Builder(this)
            .setTitle("Hakkımızda")
            .setMessage("Gold Plak olarak müzik sektörü ile ilgili müşteri odaklı kişisel ve kurumsal hizmet veren, dinamik, güler yüzlü, yaratıcı kadromuzla müşterilerimizin beklentilerini karşılamak için kesintisiz hizmet vermekteyiz.\n" +
                    "\n" +
                    "Bu şekilde müşterilerimizin plak ve dj ekipmanlarından yararlanmalarını sağlayarak taleplerini karşılayabilmek. Hedefimiz, yeni çıkan tüm ürünleri sunmak, maksimum düzeyde müşteri memnuniyetini sağlamak..")
  .setNeutralButton("Tamam", new DialogInterface.OnClickListener() {
      @Override
      public void onClick(DialogInterface dialog, int which) {

      }
  }).show();
    }
private void action_settingsMenuItem(){
    new AlertDialog.Builder(this)
            .setTitle("Versiyon")
            .setMessage("Gold Plak v1.1")
            .setNeutralButton("Tamam", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {

                }
            }).show();
}


    }

 

 

[/code]

19 Görüntülenme

1 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-7661-1418285218.jpg
zafermuhammed93
24.12.2014 - 08:29

kardeşim bu kodları dene Hem senin buradaki tasarımına göre daha iyi hoşuna da gidecektir.Buradaki hataylada karşılaşmazsın.Birde burada kullandığın şekilde adamın interneti yavaşşsa  progresDialog kullanıcıyı çok sıkacaktır bence.Aşağıda bu sorunuda çözülmüş şekilde

[code]


public class MainActivity extends ActionBarActivity {
 

final Activity activity = this;

        private WebView webView;

        @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
            // Check if the key event was the BACK key and if there's history
            if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
                webView.goBack();
                return true;
            }
            return super.onKeyDown(keyCode, event);
        }

        @Override
        public void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            this.getWindow().requestFeature(Window.FEATURE_PROGRESS);
            setContentView(R.layout.activity_main);
            webView = (WebView) findViewById(R.id.webView1);
            webView.getSettings().setJavaScriptEnabled(true);

            webView.setWebChromeClient(new WebChromeClient() {
                public void onProgressChanged(WebView view, int progress)
                {
                    activity.setTitle("Loading...");
                    activity.setProgress(progress * 100);

                    if(progress == 100)
                        activity.setTitle(R.string.app_name);
                }
            });

            webView.setWebViewClient(new WebViewClient() {
                @Override
                public void onReceivedError(WebView view, int errorCode, String description, String failingUrl)
                {
                    // Handle the error
                }

                @Override
                public boolean shouldOverrideUrlLoading(WebView view, String url)
                {
                    view.loadUrl(url);
                    return true;
                }
            });


            webView.loadUrl("http://www.goldplak.com");
            }

}

[/code]